package com.itheima.controller;

import com.itheima.bean.vo.Code;
import com.itheima.bean.vo.Result;
import com.itheima.bean.exception.BusinessException;
import com.itheima.bean.exception.SystemException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice//异常处理通知
public class ProjectExceptionAdvice {
    //处理业务异常
    @ExceptionHandler(BusinessException.class)
    public Result doBusinessException(BusinessException ex){
        //在日志中，记录下异常信息

        //给前端请求响应一个结果：异常结果信息
        return new Result(ex.getCode(), ex.getMessage());
    }


    //处理系统异常
    @ExceptionHandler(SystemException.class)
    public Result doSystemException(SystemException ex){
        //在日志中，记录下异常信息

        //给前端请求响应一个结果：异常结果信息
        return new Result(ex.getCode(), ex.getMessage());

    }

    //处理其他异常
    @ExceptionHandler(Exception.class)
    public Result doSystemException(Exception ex){
        //在日志中，记录下异常信息
        //后期：程序员可以根据日志，分析异常，找出哪些异常经常出现。 就需要在代码层面更新（打补丁）

        //给前端请求响应一个结果：异常结果信息
        return new Result(Code.EXCEPTION_ERR, ex.getMessage());

    }
}
